/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package stubs.negocio;

import java.util.ArrayList;
import interfaces.IGerenciaAeroporto;
import entidades.Aeroporto;
import entidades.Cidade;
import erros.ErroCadastramento;
import erros.ErroRemocao;
import erros.ErroAtualizacao;
import erros.ErroRecuperacao;
/**
 * Stub simula a controladora gerencia aeroporto.
 * @author thiagoStuckert
 * @author lucas
 */
public class StubCntrGerenciaAeroporto implements IGerenciaAeroporto {

    /**
     * Codigo aeroporto utilizado para sinalizar sucesso.
     */
    private static final String COD_AERO_SUCESSO = "GYN";
    /**
     * Nome da cidade utilizado para sinalizar sucesso.
     */
    private static final String NOME_CIDADE_SUCESSO = "Goiania";
    /**
     * Constante utilizada para sinalizar sucesso.
     */
    private static final int SUCESSO_RECUPERAR_AEROPORTOS = 1;

    /**
     * Recupera todos os aeroportos armazenados no banco.
     * @return lista lista de aeroportos.
     * @throws ErroRecuperacao Erro ao tentar recuperar.
     */
    @Override
    public ArrayList recuperarAeroportos() throws ErroRecuperacao{
        int sucesso = 1;
        /*Devo testar quando nao consegue recuperar do banco tb*/
        if(sucesso == SUCESSO_RECUPERAR_AEROPORTOS){
            ArrayList aeroporto = new ArrayList();
            aeroporto.add(new Aeroporto("BSB"));
            aeroporto.add(new Aeroporto("POA"));
            aeroporto.add(new Aeroporto("GYN"));
            return aeroporto;
        }else return null;
    }
    /**
     * Cadastra aeroporto no banco.
     * @param aeroporto Aeroporto a ser cadastrado no banco.
     * @param cidade Cidade aonde o aeroporto se localiza.
     * @throws ErroCadastramento Erro lançado caso haja algum erro.
     */
    @Override
    public void cadastrarAeroporto(Aeroporto aeroporto, Cidade cidade)
            throws ErroCadastramento{
        if(!aeroporto.getCodigoAeroporto().equals(COD_AERO_SUCESSO)){
            throw new ErroCadastramento("Erro no cadastramento do aeroporto.");
        }
        if(!cidade.getNomeCidade().equals(NOME_CIDADE_SUCESSO)){
            throw new ErroCadastramento("Erro no cadastramento do aeroporto.");
        }
    }

    /**
     * Atualiza o valor do aeroporto velho pelos atributos do aeroporto novo.
     * @param aeroportovelho Objeto representando o aeroporto velho.
     * @param aeroportonovo Objeto representando o aeroporto novo.
     * @throws ErroAtualizacao Erro lançado caso a ação não tenha sucesso.
     */
    @Override
    public void atualizarAeroporto(Aeroporto aeroportovelho,
            Aeroporto aeroportonovo) throws ErroAtualizacao{
        if(!aeroportovelho.getCodigoAeroporto().equals(COD_AERO_SUCESSO)){
            throw new ErroAtualizacao("Erro na atualizacao do aeroporto.");
        }else {
            aeroportovelho.setCodigoAeroporto(COD_AERO_SUCESSO);
        }
    }
    /**
     * Deleta o aeroporto representado pelo objeto aeroporto.
     * @param aeroporto Aeroporto a  ser deletado.
     * @throws ErroRemocao Erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public void deletarAeroporto(Aeroporto aeroporto) throws ErroRemocao{
        if(!aeroporto.getCodigoAeroporto().equals(COD_AERO_SUCESSO)){
            throw new ErroRemocao("Erro ao tentar remover o aeroporto.");
        }
    }

}
